Imports Clo = Enhancements.Core.Logging
Imports Ere = Enhancements.Basic.RegularExpressions
Imports Exe = Enhancements.Basic.Expressions
Imports Fun = Enhancements.Basic.Expressions.Functions
Imports Gen = System.Collections.Generic
Imports Glo = System.Globalization
Imports Iou = System.IO
Imports Ope = Enhancements.Basic.Expressions.Operators
Imports Ref = System.Reflection
Imports Reg = System.Text.RegularExpressions
Imports Sys = System
Imports Tex = System.Text
Imports Val = Enhancements.Basic.Expressions.Values
Imports Xsd = System.Xml.Schema
Imports W3c = System.Xml

Namespace Enhancements.Basic.Expressions
    ''' <summary>Event arguments type helper class for the 'Compiler.ExpressionVariablesTypesRequest' event.</summary>
    <Serializable(), DebuggerStepThrough()> _
    Public NotInheritable Class CompilerExpressionVariablesTypesRequestEventArgs
        Inherits EventArgs

        ''' <exception cref="IsNullException"> </exception>
        ''' <exception cref="IsListFilledNotException"> </exception>
        Friend Sub New(ByVal _tokens() As Variable)
            _tokens.IsListFilled("_tokens", True)

            Dim _variablesList As Gen.List(Of CompilerExpressionVariablesTypesRequestEventArgsVariable) = New Gen.List(Of CompilerExpressionVariablesTypesRequestEventArgsVariable)()
            For Each _token As Variable In _tokens
                _variablesList.Add(New CompilerExpressionVariablesTypesRequestEventArgsVariable(_token))
            Next _token
            Variables = _variablesList.ToArray()
        End Sub

        Private __Variables() As CompilerExpressionVariablesTypesRequestEventArgsVariable = {}
        ''' <summary>Gets the variables array used for defining the expression variables types.</summary>
        Public Property Variables() As CompilerExpressionVariablesTypesRequestEventArgsVariable()
            Get
                Return __Variables
            End Get
            Private Set(ByVal _value() As CompilerExpressionVariablesTypesRequestEventArgsVariable)
                _value.IsListFilled("Variables._value", True)

                __Variables = _value
            End Set
        End Property

    End Class
End Namespace
